package de.hauschild.gmltracer.gml;

/**
 * A token is the base type in GML representing all object and operations in a GML program.
 * 
 * @author Klaus Hauschild
 * @since 1.0.0
 */
public interface Token {

  /**
   * Clone.
   * 
   * @return the token
   */
  Token cloneToken();

  /**
   * Evaluate the token.
   * 
   * @param environment
   *          the environment
   * @param tokenStack
   *          the token stack
   */
  void evaluate(final Environment environment, final TokenStack tokenStack);
}
